package com.gylang.print.pdf.render;

import cn.hutool.core.util.ObjectUtil;
import com.gylang.print.pdf.domain.PdfPageWrapper;
import com.gylang.print.pdf.domain.PdfWrapper;
import com.gylang.print.pdf.domain.component.text.TextPdfComponent;
import com.gylang.print.pdf.enums.PdfComponentEnums;
import com.gylang.print.pdf.util.PdfUtil;
import org.apache.pdfbox.pdmodel.font.PDFont;

import java.util.List;

/**
 * @author gylang
 * data 2021/6/4
 */
public class TextPdfRender implements IPdfRender<TextPdfComponent> {

	@Override
	public String type() {
		return PdfComponentEnums.TEXT.getType();
	}

	@Override
	public void render(PdfWrapper wrapper, PdfPageWrapper pageWrapper, TextPdfComponent textPdfField) {

		// 判断文本位置信息
		PDFont font = ObjectUtil.defaultIfNull(textPdfField.getFont(),
			PdfUtil.loadFontByName(pageWrapper.getPdfWrapper().getDocument(), TextPdfComponent.DEFAULT_FONT));
		textPdfField.setFont(font);
		List<String> multiLine = textPdfField.getMultiLine();
		float textY = PdfUtil.getTextY(textPdfField) + PdfUtil.getTextHeight(textPdfField);
		float offset = 0;
		// 换行写入
		for (String str : multiLine) {
			float textX = PdfUtil.getTextX(textPdfField, str);
			PdfUtil.writeText(pageWrapper.getContentStream(), str, textPdfField.getColor(), textPdfField.getInterval(), textX, textY + offset, font, textPdfField.getSize());
			offset -= textPdfField.getSize() + textPdfField.getBrInterval();
		}


	}


}
